package com.bt.lms.entity;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户信息
 *
 * @author 徐大永
 */
public class User extends BaseEntity {

    /**
     * id
     *
     * @reqRule 数据库里的id
     */
    private Long id;

    /**
     * 账号
     *
     * @reqRule 必填 文本 64及以下，包含数字、字母、特殊符号
     * 邮箱或手机号
     */
    private String accountNumber;

    /**
     * 姓名
     *
     * @reqRule 必填 文本 小
     */
    private String name;

    /**
     * 证件类型
     *
     * @reqRule 必填 单 限选项(居民身份证、士官证、学生证、驾驶证、护照、港澳通行证) 默认身份证
     */
    private Integer codeType;

    /**
     * 证件号码
     *
     * @reqRule 必填 文本 根据证件类型进行不同的位数限制（居民身份证18、士官证7、学生证16、驾驶证18、护照9、港澳通行9）
     */
    private String code;

    /**
     * 所属单位
     *
     * @reqRule 必填 文本 小
     */
    private String unit;

    /**
     * 移动电话
     *
     * @reqRule 必填 文本 11位 国内电话
     */
    private String mobilePhone;

    /**
     * 创建人
     *
     * @reqRule 必填 文本 小 当前使用人（登陆者）
     */
    private String createdName;

    /**
     * 创建时间
     *
     * @reqRule 必填 日期 yyyy-MM-dd HH:mm
     */
    private LocalDateTime createdTime;

    /**
     * 最近登录时间
     *
     * @reqRule 必填 日期
     */
    private LocalDateTime logInTime;

    /**
     * 状态
     * 1-启用 2-停用
     *
     * @reqRule 必填 单 限选项（启用、停用） 默认启用
     */
    private Integer status;

    /**
     * 密码
     * 默认：123456
     *
     * @reqRule 必填 文本 6-32 默认123456
     */
    private String password;

    /**
     * 设置时间（用户被设置角色的时间
     *
     * @reqRule 必填 日期
     */
    private LocalDateTime installRoleTime;

    //------关系

    /**
     * 用户的角色
     * 内容为角色的id
     * @reqRule 非必选 多 当前用户未拥有的角色中选择
     */
    private List<Role> roles;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getCodeType() {
        return codeType;
    }

    public void setCodeType(Integer codeType) {
        this.codeType = codeType;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getMobilePhone() {
        return mobilePhone;
    }

    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    public String getCreatedName() {
        return createdName;
    }

    public void setCreatedName(String createdName) {
        this.createdName = createdName;
    }

    public LocalDateTime getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(LocalDateTime createdTime) {
        this.createdTime = createdTime;
    }

    public LocalDateTime getLogInTime() {
        return logInTime;
    }

    public void setLogInTime(LocalDateTime logInTime) {
        this.logInTime = logInTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public LocalDateTime getInstallRoleTime() {
        return installRoleTime;
    }

    public void setInstallRoleTime(LocalDateTime installRoleTime) {
        this.installRoleTime = installRoleTime;
    }

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }
}
